import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Solution954 {
    public boolean canReorderDoubled(int[] arr) {
        Map<Integer,Integer> map=new HashMap<>();
        for (int i : arr) {
            map.put(i,map.getOrDefault(i,0)+1);
        }
        List<Map.Entry<Integer, Integer>> entrySet=new ArrayList<>(map.entrySet());
        entrySet.sort(Comparator.comparingInt(a -> Math.abs(a.getKey())));
        for (Map.Entry<Integer, Integer> entry : entrySet) {
            if (map.get(entry.getKey())!=0){
                if (!map.containsKey(entry.getKey()*2)||map.get(entry.getKey()*2)<map.get(entry.getKey())){
                    return false;
                }
                map.put(entry.getKey()*2,map.get(entry.getKey()*2)-map.get(entry.getKey()));
                map.put(entry.getKey(),0);
            }
        }
        return true;
    }

    public static void main(String[] args) {
        System.out.println(new Solution954().canReorderDoubled(new int[]{1,1,1,1,2,2,2,2}));
    }
}
